package com.ruoyi.statistics.domain;

import java.math.BigDecimal;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;

/**
 * 库存监控分析对象 stock_analysis
 * 
 * @author ruoyi
 * @date 2025-01-18
 */
public class StockAnalysisVO extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    /** 商品ID */
    @Excel(name = "商品ID")
    private Long productId;

    /** SKU ID */
    @Excel(name = "SKU ID")
    private Long skuId;

    /** 商品名称 */
    @Excel(name = "商品名称")
    private String productName;

    /** 商品编码 */
    @Excel(name = "商品编码")
    private String productCode;

    /** SKU编码 */
    @Excel(name = "SKU编码")
    private String skuCode;

    /** SKU名称 */
    @Excel(name = "SKU名称")
    private String skuName;

    /** 规格信息 */
    @Excel(name = "规格信息")
    private String specInfo;

    /** 分类名称 */
    @Excel(name = "分类名称")
    private String categoryName;

    /** 品牌名称 */
    @Excel(name = "品牌名称")
    private String brandName;

    /** 当前库存 */
    @Excel(name = "当前库存")
    private Long currentStock;

    /** 安全库存 */
    @Excel(name = "安全库存")
    private Long safetyStock;

    /** 库存状态 */
    @Excel(name = "库存状态", readConverterExp = "1=正常,2=预警,3=缺货")
    private String stockStatus;

    /** 库存健康度 */
    @Excel(name = "库存健康度(%)")
    private BigDecimal healthScore;

    /** 近7天入库数量 */
    @Excel(name = "近7天入库")
    private Long inStock7Days;

    /** 近7天出库数量 */
    @Excel(name = "近7天出库")
    private Long outStock7Days;

    /** 近30天入库数量 */
    @Excel(name = "近30天入库")
    private Long inStock30Days;

    /** 近30天出库数量 */
    @Excel(name = "近30天出库")
    private Long outStock30Days;

    /** 平均日销量 */
    @Excel(name = "平均日销量")
    private BigDecimal avgDailySales;

    /** 预计可售天数 */
    @Excel(name = "预计可售天数")
    private Integer estimatedDays;

    /** 最后入库时间 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "最后入库时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    private Date lastInTime;

    /** 最后出库时间 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "最后出库时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    private Date lastOutTime;

    /** 组织ID */
    private Long orgId;

    /** 分类ID */
    private Long categoryId;

    /** 品牌ID */
    private Long brandId;

    /** 查询开始时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date beginTime;

    /** 查询结束时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date endTime;

    public void setProductId(Long productId) 
    {
        this.productId = productId;
    }

    public Long getProductId() 
    {
        return productId;
    }

    public void setSkuId(Long skuId) 
    {
        this.skuId = skuId;
    }

    public Long getSkuId() 
    {
        return skuId;
    }

    public void setProductName(String productName) 
    {
        this.productName = productName;
    }

    public String getProductName() 
    {
        return productName;
    }

    public void setProductCode(String productCode) 
    {
        this.productCode = productCode;
    }

    public String getProductCode() 
    {
        return productCode;
    }

    public void setSkuCode(String skuCode) 
    {
        this.skuCode = skuCode;
    }

    public String getSkuCode() 
    {
        return skuCode;
    }

    public void setSkuName(String skuName) 
    {
        this.skuName = skuName;
    }

    public String getSkuName() 
    {
        return skuName;
    }

    public void setSpecInfo(String specInfo) 
    {
        this.specInfo = specInfo;
    }

    public String getSpecInfo() 
    {
        return specInfo;
    }

    public void setCategoryName(String categoryName) 
    {
        this.categoryName = categoryName;
    }

    public String getCategoryName() 
    {
        return categoryName;
    }

    public void setBrandName(String brandName) 
    {
        this.brandName = brandName;
    }

    public String getBrandName() 
    {
        return brandName;
    }

    public void setCurrentStock(Long currentStock) 
    {
        this.currentStock = currentStock;
    }

    public Long getCurrentStock() 
    {
        return currentStock;
    }

    public void setSafetyStock(Long safetyStock) 
    {
        this.safetyStock = safetyStock;
    }

    public Long getSafetyStock() 
    {
        return safetyStock;
    }

    public void setStockStatus(String stockStatus) 
    {
        this.stockStatus = stockStatus;
    }

    public String getStockStatus() 
    {
        return stockStatus;
    }

    public void setHealthScore(BigDecimal healthScore) 
    {
        this.healthScore = healthScore;
    }

    public BigDecimal getHealthScore() 
    {
        return healthScore;
    }

    public void setInStock7Days(Long inStock7Days) 
    {
        this.inStock7Days = inStock7Days;
    }

    public Long getInStock7Days() 
    {
        return inStock7Days;
    }

    public void setOutStock7Days(Long outStock7Days) 
    {
        this.outStock7Days = outStock7Days;
    }

    public Long getOutStock7Days() 
    {
        return outStock7Days;
    }

    public void setInStock30Days(Long inStock30Days) 
    {
        this.inStock30Days = inStock30Days;
    }

    public Long getInStock30Days() 
    {
        return inStock30Days;
    }

    public void setOutStock30Days(Long outStock30Days) 
    {
        this.outStock30Days = outStock30Days;
    }

    public Long getOutStock30Days() 
    {
        return outStock30Days;
    }

    public void setAvgDailySales(BigDecimal avgDailySales) 
    {
        this.avgDailySales = avgDailySales;
    }

    public BigDecimal getAvgDailySales() 
    {
        return avgDailySales;
    }

    public void setEstimatedDays(Integer estimatedDays) 
    {
        this.estimatedDays = estimatedDays;
    }

    public Integer getEstimatedDays() 
    {
        return estimatedDays;
    }

    public void setLastInTime(Date lastInTime) 
    {
        this.lastInTime = lastInTime;
    }

    public Date getLastInTime() 
    {
        return lastInTime;
    }

    public void setLastOutTime(Date lastOutTime) 
    {
        this.lastOutTime = lastOutTime;
    }

    public Date getLastOutTime() 
    {
        return lastOutTime;
    }

    public void setOrgId(Long orgId) 
    {
        this.orgId = orgId;
    }

    public Long getOrgId() 
    {
        return orgId;
    }

    public void setCategoryId(Long categoryId) 
    {
        this.categoryId = categoryId;
    }

    public Long getCategoryId() 
    {
        return categoryId;
    }

    public void setBrandId(Long brandId) 
    {
        this.brandId = brandId;
    }

    public Long getBrandId() 
    {
        return brandId;
    }

    public void setBeginTime(Date beginTime) 
    {
        this.beginTime = beginTime;
    }

    public Date getBeginTime() 
    {
        return beginTime;
    }

    public void setEndTime(Date endTime) 
    {
        this.endTime = endTime;
    }

    public Date getEndTime() 
    {
        return endTime;
    }

    @Override
    public String toString() {
        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
            .append("productId", getProductId())
            .append("skuId", getSkuId())
            .append("productName", getProductName())
            .append("productCode", getProductCode())
            .append("skuCode", getSkuCode())
            .append("skuName", getSkuName())
            .append("specInfo", getSpecInfo())
            .append("categoryName", getCategoryName())
            .append("brandName", getBrandName())
            .append("currentStock", getCurrentStock())
            .append("safetyStock", getSafetyStock())
            .append("stockStatus", getStockStatus())
            .append("healthScore", getHealthScore())
            .append("inStock7Days", getInStock7Days())
            .append("outStock7Days", getOutStock7Days())
            .append("inStock30Days", getInStock30Days())
            .append("outStock30Days", getOutStock30Days())
            .append("avgDailySales", getAvgDailySales())
            .append("estimatedDays", getEstimatedDays())
            .append("lastInTime", getLastInTime())
            .append("lastOutTime", getLastOutTime())
            .append("orgId", getOrgId())
            .append("categoryId", getCategoryId())
            .append("brandId", getBrandId())
            .append("beginTime", getBeginTime())
            .append("endTime", getEndTime())
            .toString();
    }
}